<?php
namespace App\Common\Config;

/**
 * 全局管理正式服和测试服有区别的资源，这里的资源可以是(URI,配置信息)等
 * Class AllResources
 * @package App\Common\Config
 */
class AllResources {
    /**
     * 生产环境资源(URI,CONFIG)
     * 注意:这里的顶级KEY和testResources变量中的KEY必须一致
     * @var array
     */
	private $onlineResources = [
		//示例 获取作者地址 正式环境
		'authorUri'	=>	'https://www.scarecrow.top'
	];

    /**
     * 测试环境资源(URI,CONFIG)
     * 注意:这里的顶级KEY和onlineResources变量中的KEY必须一致
     * @var array
     */
	private $testResources = [
		//示例 获取作者地址 测试环境
		'authorUri'	=>	'https://www.scarecrow.top/home'
	];

	//实例对象
	private static $obj = null;

	protected function __construct(){}

	/**
	 * 获取实例对象
	 * @return AllResources|null
	 */
	public static function getExample() {
		if (self::$obj) {
			return self::$obj;
		}

		self::$obj = new self();
		return self::$obj;
	}

	/**
	 * 获取Resources
	 * @param string $key
	 * @param string $default
	 * @return array|mixed|string
	 */
	public static function getResources($key='', $default='') {
		$obj = self::getExample();
		if (\Illuminate\Support\Env::get('APP_ENV', 'local') == 'production') {
			$resourcesList = $obj->onlineResources;
		} else {
            $resourcesList = $obj->testResources;
		}

		if (!$key) {
			return $resourcesList;
		}

		$keyList = explode('.', $key);
		$tempData = $resourcesList;
		foreach ($keyList as $k) {
			if (array_key_exists($k, $tempData)) {
				$tempData = $tempData[$k];
				continue;
			}

			return $default;
		}
		return $tempData;
	}
}